Hadoop 配置实践:从零开始搭建单机环境
以下以 Apache Hadoop 2.7.x 为例,讲解单机环境的核心配置与启动流程(生产环境需配置分布式集群)。
步骤 1:核心配置文件
Hadoop 配置文件位于 $HADOOP_HOME/etc/hadoop 目录,主要包括:
1. core-site.xml(核心配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
<property> <name>hadoop.tmp.dir</name> <value>/opt/data/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> </configuration>
|
2. hdfs-site.xml(HDFS 配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/data/hadoop/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/data/hadoop/datanode</value> </property> <property> <name>dfs.namenode.http-address</name> <value>localhost:9870</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>localhost:50090</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> </configuration>
|
3. mapred-site.xml(MapReduce 配置)
首先复制模板:cp mapred-site.xml.template mapred-site.xml,再配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?xml version="1.0"?> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>1024</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>1024</value> </property> </configuration>
|
4. yarn-site.xml(YARN 配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?xml version="1.0"?> <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>localhost:8088</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> </configuration>
|
步骤 2:初始化与启动 Hadoop
初始化 NameNode(首次启动前执行):
成功标志:输出 successfully formatted 信息,且在 dfs.namenode.name.dir 目录下生成元数据文件。
启动 Hadoop 集群:
1 2 3 4
| # 启动 HDFS 和 YARN(需进入 $HADOOP_HOME/sbin 目录) # 启动 HDFS 和 YARN(2.7.x 推荐分步启动,避免依赖问题) ./start-dfs.sh # 启动 HDFS(NameNode、DataNode、SecondaryNameNode) ./start-yarn.sh # 启动 YARN(ResourceManager、NodeManager)
|
验证启动状态:
步骤 3:HDFS 基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 创建目录 hdfs dfs -mkdir /test
# 上传本地文件到 HDFS hdfs dfs -put localfile.txt /test/
# 查看 HDFS 文件 hdfs dfs -ls /test/
# 下载 HDFS 文件到本地 hdfs dfs -get /test/localfile.txt ./
# 查看文件内容 hdfs dfs -cat /test/localfile.txt
|
常见问题与解决
- 启动后缺少 DataNode 进程
- 原因:
hadoop.tmp.dir 目录权限不足或元数据损坏。
- 解决:删除
dfs.datanode.data.dir 目录下的所有文件,重新执行 hdfs namenode -format 后重启。
- YARN 任务提交失败
- 原因:内存配置不足或
mapreduce.framework.name 未设为 yarn。
- 解决:检查
mapred-site.xml 中 mapreduce.framework.name 是否为 yarn,并调整 yarn-site.xml 中的内存配置。
- 50070 端口无法访问
- 原因:NameNode 未启动或防火墙拦截。
- 解决:确认
NameNode 进程存在,关闭防火墙或开放 50070 端口。